---@class UIRefineResult : UIBase
UIRefineResult = UIBase.New(PanelResNames.UIRefineResult)
local t = UIRefineResult
function t.Init(partnerId,oldLevelList,equipList,costItems)
    t.partnerId = partnerId
    t.oldLevelList = oldLevelList
    t.equipList = equipList
    t.costItems = costItems
    UIBase.Init(t)
end

function t:OnCreate()
    self.itemList = self:GetList("list")
    self.itemList.height = #t.equipList * 200
    self.costItemList = self:GetList("listCost")
    self:SetDynamicList(self.itemList,self.ItemRender,nil,true)
    self:SetDynamicList(self.costItemList,self.CostItemRender,nil,true)
    local BgClose = self:GetChild("BgClose")
    self:RegisterOnClick(BgClose,self.ClickClose)
    self:Refresh()
end

function t:OnEnable()

end
function t:OnDisable()
end
function t:OnDestroy()
end
function t.Sort(a,b)
    return EnumConst.EquipPartSortIndex[a.part] < EnumConst.EquipPartSortIndex[b.part]
end
function t:Refresh()
    table.sort(t.equipList,t.Sort)
    self.itemList.numItems = #t.equipList
    self.costItemList.numItems = #t.costItems
end
---@param go GComponent
function t:ItemRender(index,go)
    local equip = t.equipList[index]
    local refineCfg = dataTable.getDataTableByMultiId("t_equiprefine",equip.itemModelId,equip.curRfLevel)
    local expMax = refineCfg.f_EquipRefineLevelExp
    local oldLv = t.oldLevelList[equip.itemId]

    local nameTxt = go:GetChild("name")
    local lvTxt = go:GetChild("num")
    local ctrlState = go:GetController("state")
    local upLvTxt = go:GetChild("upNum")
    local slider = go:GetChild("Slider")
    local sliderNum = go:GetChild("sliderNum")
    local equipItem = go:GetChild("equip")
    ---@type EquipItemInfo
    local ctrl = logicMgr.CtrlManager.GetCtrl(PanelNames.EquipItem)
    ctrl.initData(equipItem,equip)
    ctrl.HideRefineLevel(equipItem)
    nameTxt.text = equip.name
    lvTxt.text = tostring(oldLv)
    upLvTxt.text = tostring(equip.curRfLevel)
    if oldLv < equip.curRfLevel then
        if equip.curRfLevel == self:GetEquipMaxRefineLevel(equip.itemModelId) then  --已升至满级
            ctrlState.selectedIndex = 2
        else
            ctrlState.selectedIndex = 1
        end
    else
        ctrlState.selectedIndex = 0
    end
    slider.value = equip.exp/expMax * 100
    sliderNum.text = string.format("%d/%d",equip.exp,expMax)
end
function t:CostItemRender(index,go)
    local ctrlItem = CtrlManager.GetCtrl(PanelNames.Item);
    if ctrlItem ~= nil then
        if logicMgr.ItemManager.IsEquip(t.costItems[index].itemModelId) then
            local itemData = logicMgr.EquipManager.InitEquip(t.costItems[index])
            ctrlItem.initData(go,itemData);
        else
            ctrlItem.initData(go,t.costItems[index]);
        end
    end
end
function t:GetEquipMaxRefineLevel(equipModelId)
    local equipMaxLevel = 0
    local cfg = dataTable.getDataTableByStringId("t_equiprefine",equipModelId) or {}
    for k,v in pairs(cfg) do
        if (v.f_EquipRefineLevel > equipMaxLevel) then
            equipMaxLevel = v.f_EquipRefineLevel
        end
    end
    return equipMaxLevel
end
function t:ClickClose()
    closeUI(PanelNames.UIRefineResult)
end
return t